//
//  UIView+Frame.m
//

#import "UIView+Frame.h"
#import <objc/runtime.h>
#import <Masonry/Masonry.h>

@implementation UIView (Frame)

- (void)setX:(CGFloat)x
{
    CGRect frame = self.frame;
    frame.origin.x = x;
    self.frame = frame;
}

- (CGFloat)x
{
    return self.frame.origin.x;
}

- (void)setY:(CGFloat)y
{
    CGRect frame = self.frame;
    frame.origin.y = y;
    self.frame = frame;
}

- (CGFloat)y
{
    return self.frame.origin.y;
}

- (void)setCenterX:(CGFloat)centerX
{
    CGPoint center = self.center;
    center.x = centerX;
    self.center = center;
}

- (CGFloat)centerX
{
    return self.center.x;
}

- (void)setCenterY:(CGFloat)centerY
{
    CGPoint center = self.center;
    center.y = centerY;
    self.center = center;
}

- (CGFloat)centerY
{
    return self.center.y;
}

- (void)setWidth:(CGFloat)width
{
    CGRect frame = self.frame;
    frame.size.width = width;
    self.frame = frame;
}

- (CGFloat)width
{
    return self.frame.size.width;
}

- (void)setHeight:(CGFloat)height
{
    CGRect frame = self.frame;
    frame.size.height = height;
    self.frame = frame;
}

- (CGFloat)height
{
    return self.frame.size.height;
}

- (void)setSize:(CGSize)size
{
    CGRect frame = self.frame;
    frame.size = size;
    self.frame = frame;
}

- (CGSize)size
{
    return self.frame.size;
}

- (void)setTop:(CGFloat)t
{
    self.frame = CGRectMake(self.left, t, self.width, self.height);
}

- (CGFloat)top
{
    return self.frame.origin.y;
}

- (void)setBottom:(CGFloat)b
{
    self.frame = CGRectMake(self.left, b - self.height, self.width, self.height);
}

- (CGFloat)bottom
{
    return self.frame.origin.y + self.frame.size.height;
}

- (void)setLeft:(CGFloat)l
{
    self.frame = CGRectMake(l, self.top, self.width, self.height);
}

- (CGFloat)left
{
    return self.frame.origin.x;
}

- (void)setRight:(CGFloat)r
{
    self.frame = CGRectMake(r - self.width, self.top, self.width, self.height);
}

- (CGFloat)right
{
    return self.frame.origin.x + self.frame.size.width;
}

static const char OpenRtl = '\0';
- (void)setOpenRtl:(BOOL)openRtl {
    
    objc_setAssociatedObject(self, &OpenRtl, @(openRtl), OBJC_ASSOCIATION_COPY_NONATOMIC);
    if(openRtl) {
        if([self isKindOfClass:[UIImageView class]]||
           [self isKindOfClass:[UIButton class]] ||
           [self isKindOfClass:[UIView class]] ){
            [self rtlTransform];
        }else if([self isKindOfClass:[UITextField class]]){
            UITextField *textField = (UITextField *)self;
            textField.textAlignment = NSTextAlignmentRight;
        }else if([self isKindOfClass:[UITextView class]]){
            UITextView *textView = (UITextView *)self;
            textView.textAlignment = NSTextAlignmentRight;
        }else{
            
        }
    }
}

- (BOOL)openRtl {
    NSNumber *open = objc_getAssociatedObject(self, &OpenRtl);
    return open.boolValue;
}

- (void)rtlTransform {
    if([[[[NSBundle mainBundle] preferredLocalizations] firstObject] hasPrefix:@"ar"]){
        self.transform = CGAffineTransformMakeScale(-1, 1);
    }
}

- (void)showNoContents:(UIImage *)image withMsg:(NSString *)msg {
    
    if(!image) image = [UIImage imageNamed:@"no_data1"];
    
    UIImageView *imageView = [self viewWithTag:9998];
    if(!imageView){
        imageView = [[UIImageView alloc] initWithImage:image];
        [self addSubview:imageView];
        imageView.tag = 9998;
        [imageView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(@0); make.centerY.equalTo(@0);
            make.width.equalTo(@134); make.height.equalTo(@134);
        }];
    }
    
    UILabel *showLabel =  [self viewWithTag:9999];
    if(!showLabel){
        UILabel *showLabel = [[UILabel alloc] init];
        [self addSubview:showLabel];
        [showLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(imageView.mas_bottom).equalTo(@10);
            make.centerX.equalTo(imageView.mas_centerX);
        }];
        showLabel.textColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.55];
        showLabel.text = msg;
        showLabel.font = [UIFont systemFontOfSize:14];
        showLabel.textAlignment = NSTextAlignmentCenter;
        showLabel.tag = 9999;
    }
}

- (void)removeNoContentView {
    UIImageView *imageView = [self viewWithTag:9998];
    [imageView removeFromSuperview];
    UILabel *showLabel = [self viewWithTag:9999];
    [showLabel removeFromSuperview];
}


@end

